
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Eureka 是如何确保服务注册中心的高可用性的？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Eureka 是如何确保服务注册中心的高可用性的？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Eureka 是如何通过集群部署（HA）来保证高可用的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Eureka 允许部署多个 Server 实例组成集群。这些实例之间会相互注册并同步数据。这种方式保证了即使某个 Eureka Server 实例宕机，其他实例仍然可以提供服务注册和发现功能。</div>
          </div>
          <div class="card-source">来源: 1. 集群部署（Eureka Server HA）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在 Eureka 的客户端容错机制中，本地缓存起到了什么关键作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Eureka 客户端会缓存服务注册信息。当 Eureka Server 暂时不可用时，客户端可以利用本地缓存的数据继续进行服务发现和调用，从而提升系统的容错能力。</div>
          </div>
          <div class="card-source">来源: 3. 客户端容错</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Eureka 的自我保护模式是如何被触发的？在该模式下，Eureka Server 的行为有何变化？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当 Eureka Server 检测到服务实例的心跳丢失率异常增加时，会进入自我保护模式。在此模式下，它会暂时保留所有服务实例的注册信息，即使这些实例没有按时发送心跳，以避免因网络问题导致服务被错误移除。</div>
          </div>
          <div class="card-source">来源: 6. 自我保护模式</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Eureka 的心跳机制是如何工作的，其主要目的是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">注册的服务需要定期向 Eureka Server 发送心跳请求以续期注册信息。如果 Server 未能按时收到心跳，就会将该服务从注册表中删除。其主要目的是确保服务列表的实时性和准确性，并防止失效服务长时间未被清理。</div>
          </div>
          <div class="card-source">来源: 5. 心跳机制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Eureka Server 集群中的节点之间是如何进行数据同步的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Eureka Server 实例之间采用 Peer-to-Peer 同步机制。每个 Server 实例都可以接收注册请求，并会将这些服务信息同步给集群中的其他实例，从而确保所有节点的服务信息保持一致。</div>
          </div>
          <div class="card-source">来源: 2. Peer-to-Peer 同步</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Eureka 客户端的重试机制在何种情况下生效，其作用是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当 Eureka 客户端与 Eureka Server 的通信失败时，重试机制会生效，客户端将尝试重新连接。其作用是减少由于网络波动或短暂故障导致的服务发现失败，从而提高系统的稳定性和可靠性。</div>
          </div>
          <div class="card-source">来源: 4. 客户端重试机制</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
